// 合并复用原则
// Composite Reuse Principle, CRP
// 
// 这里用一个司机开车的例子来解释什么是合并复用原则
// 原来实现司机又能开宝马又能开大众的代码是 在 CRP-00.hpp里的
//

#pragma once

#include <iostream>

// #include "CRP-00.hpp"

// void testCRP01() {
// 	// 假设有个司机叫老肥
// 	Drivers *theOldFat = new Drivers;

// 	// 老肥想开宝马
// 	theOldFat->setCarType(new BMW);
// 	theOldFat->driverCar();

// 	// 老肥想开大众
// 	theOldFat->setCarType(new Volkswagen);
// 	theOldFat->driverCar();

// 	delete theOldFat;
// }

// 应用 合并复用原则之后
#include "CRP-01.hpp"

void testCRP02() {
	// 假设有个司机叫老肥
	Drivers *theOldFat = new Drivers;

	// 老肥想开宝马
	theOldFat->driveBMW();

	// 老肥想开大众
	theOldFat->driveVolkswagen();

	delete theOldFat;
}

int main() {
	// testCRP01();

	testCRP02();
	return 0;
}
